/**
 * 文件拷贝就是 1. 读 出文件  2. 写入另一个文件
* @description
*/
// 可以操作当前的文件和文件夹
const fs = require('fs');
// 两个参数 err data  fs.exists()

// fs.readFile('./mock/data.json', (err, data) => {
//   console.log(data.toString())
//   fs.writeFile('./mock-tes', data, (err, res) => {
//     console.log(err, 'err---rr')
//     console.log(res, 'res') // 写入的结果 反馈
//   })
// })

const copy = (src, dist) => {
  // 读文件夹
  fs.readdir(src, (err, paths) => {
    console.log(paths, 'paths')
    paths.forEach(item => {
      // 路径拼接
      let _src = src + '/' + item;
      let _dist = dist + '/' + item;
      console.log(_src, _dist)
      // 判断是文件还是文件夹
      fs.stat(_src, (err, stat) => {
        if (stat.isDirectory()) {
          existsFn(_src, _dist)
        } else if (stat.isFile()) {
          // 如果是文件 直接读并且写 （拷贝文件）
          // fs.readFile(_src, (err, data) => {
          //   fs.writeFile(_dist, data, (err, res) => {
          //     console.log(res, '写入成功') // 写入的结果 反馈
          //   })
          // })
          let data = fs.readFileSync(_src);
          let res = fs.writeFileSync(_dist, data);
          console.log(res, 'success')
        }
      })
    })
  })
}

// 判断当前文件夹存在不存在
// src拷贝目标
// dist拷贝到目录   fs.mkdir

const existsFn = (src, dist) => {
  fs.exists(dist, (flag) => {
    console.log(flag, 'flag')
    if (flag) {
      copy(src, dist)
    } else {
      fs.mkdir(dist, () => {
        // 读写 
        copy(src, dist)
      })
    }
  })
}

existsFn('./src', './dist')